// 对象的使用其实会复杂一些

// 我们这里要了解一个新的关键词，interface
interface person {
  name: string;
  age: number;
  sex: string;
  hobby?: string[]; //对于不一定存在的属性，可以用 ?: 来声明

  //对象中难免会有一些无法被提前预知到而且无伤大雅的属性，比如后端给我们的数据里难免有一些用不着而且还扔不掉的数据，我们可以固定这样写即可。也许你会问，这些无法被预知的属性我直接啥也不写不管他多好啊，你要明白，ts的检测机制很严格的，你没有写的属性，ts就会认为未来的对象不能有这写属性，到时就会报错了，所以必须这样写一下
  [propName: string]: any;
}

// 这是使用方法，相信你也看懂了，interface中使用 : 声明的属性，使用时必须按照格式传入，而使用 ?: 声明的属性，可以不传，但是只要传了，还是要遵循规范
const obj: person = {
  name: "",
  age: 1,
  sex: "",
};
const obj2: person = {
  name: "",
  age: 1,
  sex: "",
  // hobby:[1,2,3],//爆红，因为里面是数字，不符合interface中的要求
  hobby: ["抽烟", "喝酒", "烫头"],
};
